// JavaScript Document
//app核心模块
((function(){
//配置基础的模块
var model = KuoqiAppjs.define('Kuoqi.app',{
	extends:'',//继承
	init:function(){},//每个模块的基础自定义方法
	boxElement:null,//盒子元素一个app的最外层信息
	
	//这个是基础的模型分配器，会将本模型分配到数据自己的模块里面，在执行extends之后
	__toModule:function(){
		
		//将本模型注册到pages中供程序使用
		this.top.library.pages[this.route] = this;
		this.page_id = parseInt(Math.random() * Math.pow(10,6));
		//这个的同时，需要将文件信息注册到页面中
		this.container = $Q('<div data-page_id="'+this.page_id+'"></div>');
		if(this.top.boxElement){
			$Q(this.top.boxElement).append(this.container);
		}
	},

	//使用一个页面信息
	//使用页面。。。。。
	//包含
	//self::分配页面的选择器
	//这个就是使用某个页面的具体方法了
	//根据一个路由信息获取page文件
	getPageByroute:function(route){
		return this.top.library.pages[route]?this.top.library.pages[route]:null;
	},
	//updateTime:2022/02/4
	//这个函数在新版本中暴露于
	use:function(page_id,params){
		//配置参数信息
		//var route = KuoqiAppjs.route.resetRoute(page_id,params);
		var page = this.getPageByroute(page_id);
		if(page){
			this.top.Debug('页面信息存在，流程');
			//配置当前页面
			this.top.library.now = page;
			//将当前页面配置进入库
			//KuoqiAppjs.setLibrary('pagenow',page,'page');
			
			//设置当前页面标题
			//$Q('title').html(page.title);
			//page.otherHide();
			//page.sync();,使用一个页面的时候，是否要使用sync信息呢，这个有待考量了呀
			//展示当前页面，意味着什么
			//意味着，其他页面需要隐藏的喔，不要搞错了呢
			//显示页面的函数方法
			//判定是否初始化，如果没有初始化需要初始化
			if(page.hasInit){
				//这里会初始化页面数据存储器
				page.show();
			}else{
				page.init(function(){
					page.show();	
				});
			}

		}else{
			//页面信息不存在流程
			
			this.top.Debug('KuoqiAppjs.app.use:页面['+page_id+']不存在');
		}
	},
	
	//使用一个路由页面
	//2022/02/04
	loadpage:function(route,params){

		//设置路由信息
		var page = this.getPageByroute(route);
		var ths = this;
		if(page){
			//如果这个元素存在，则直接使用这个页面
			ths.use(route,params);
		}else{
			var fname = this.top.tools.route2path(route);//.any2path(route);
			this.top.loader(fname,function(rs){
				if(rs){
					var model = ths.top.getModel(route);
					if(!model){
						ths.top.Debug('['+route+']model not exise');
						return ;
					}
					//console.log(model);
					ths.top.syncModels();
					//page模块的初始化
					model.init(function(){
						//使用一个页面元素信息
						ths.use(route,params);
					});
				}else{
					this.top.Debug('页面文件'+fname+'加载失败');	
				}
			});
		}
	},
	show:function(){
		//总元素盒子做隐藏操作
		//通过【data-active】的属性进行控制显示隐藏
		this.top.Debug('请自定义页面展示执行方法内容');
	},
	hide:function(){
		//$Q(this.dom).removeAttr('data-active');	
		this.top.Debug('请自定义页面内容隐藏方法内容');
	},
});
KuoqiAppjs.app = model.new({
	use:model.use,//使用一个函数作为基础的函数信息
});
})())
